gtk/gtkcontainer.c: use accessor functions to access GtkWidget
authorJavier Jardón <jjardon@gnome.org>
Wed, 11 Aug 2010 21:14:16 +0000 (23:14 +0200)
committerJavier Jardón <jjardon@gnome.org>
Sun, 22 Aug 2010 20:56:13 +0000 (22:56 +0200)
gtk/gtkcontainer.c

index 624b49a7a21772230969aec2030782762d11b82c..b811baf38e66dbefc32ad0ba37952289f6700796 100644 (file)
@@ -324,7 +324,8 @@ gtk_container_buildable_add_child (GtkBuildable  *buildable,
     {
       GTK_BUILDER_WARN_INVALID_CHILD_TYPE (buildable, type);
     }
-  else if (GTK_IS_WIDGET (child) && GTK_WIDGET (child)->parent == NULL)
+  else if (GTK_IS_WIDGET (child) &&
+           gtk_widget_get_parent (GTK_WIDGET (child)) == NULL)
     {
       gtk_container_add (GTK_CONTAINER (buildable), GTK_WIDGET (child));
     }
@@ -610,7 +611,7 @@ gtk_container_child_get_valist (GtkContainer *container,
 
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (child));
-  g_return_if_fail (child->parent == GTK_WIDGET (container));
+  g_return_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (container));
 
   g_object_ref (container);
   g_object_ref (child);
@@ -679,7 +680,7 @@ gtk_container_child_get_property (GtkContainer *container,
 
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (child));
-  g_return_if_fail (child->parent == GTK_WIDGET (container));
+  g_return_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (container));
   g_return_if_fail (property_name != NULL);
   g_return_if_fail (G_IS_VALUE (value));
   
@@ -755,7 +756,7 @@ gtk_container_child_set_valist (GtkContainer *container,
 
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (child));
-  g_return_if_fail (child->parent == GTK_WIDGET (container));
+  g_return_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (container));
 
   g_object_ref (container);
   g_object_ref (child);
@@ -828,7 +829,7 @@ gtk_container_child_set_property (GtkContainer *container,
 
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (child));
-  g_return_if_fail (child->parent == GTK_WIDGET (container));
+  g_return_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (container));
   g_return_if_fail (property_name != NULL);
   g_return_if_fail (G_IS_VALUE (value));
   
@@ -876,14 +877,14 @@ gtk_container_add_with_properties (GtkContainer *container,
 {
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (widget));
-  g_return_if_fail (widget->parent == NULL);
+  g_return_if_fail (gtk_widget_get_parent (widget) == NULL);
 
   g_object_ref (container);
   g_object_ref (widget);
   gtk_widget_freeze_child_notify (widget);
 
   g_signal_emit (container, container_signals[ADD], 0, widget);
-  if (widget->parent)
+  if (gtk_widget_get_parent (widget))
     {
       va_list var_args;
 
@@ -917,7 +918,7 @@ gtk_container_child_set (GtkContainer      *container,
   
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (child));
-  g_return_if_fail (child->parent == GTK_WIDGET (container));
+  g_return_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (container));
 
   va_start (var_args, first_prop_name);
   gtk_container_child_set_valist (container, child, first_prop_name, var_args);
@@ -944,7 +945,7 @@ gtk_container_child_get (GtkContainer      *container,
   
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (child));
-  g_return_if_fail (child->parent == GTK_WIDGET (container));
+  g_return_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (container));
 
   va_start (var_args, first_prop_name);
   gtk_container_child_get_valist (container, child, first_prop_name, var_args);
@@ -1208,10 +1209,14 @@ void
 gtk_container_add (GtkContainer *container,
                   GtkWidget    *widget)
 {
+  GtkWidget *parent;
+
   g_return_if_fail (GTK_IS_CONTAINER (container));
   g_return_if_fail (GTK_IS_WIDGET (widget));
 
-  if (widget->parent != NULL)
+  parent = gtk_widget_get_parent (widget);
+
+  if (parent != NULL)
     {
       g_warning ("Attempting to add a widget with type %s to a container of "
                  "type %s, but the widget is already inside a container of type %s, "
@@ -1219,7 +1224,7 @@ gtk_container_add (GtkContainer *container,
                  "explains how to reparent a widget.",
                  g_type_name (G_OBJECT_TYPE (widget)),
                  g_type_name (G_OBJECT_TYPE (container)),
-                 g_type_name (G_OBJECT_TYPE (widget->parent)));
+                 g_type_name (G_OBJECT_TYPE (parent)));
       return;
     }
 
@@ -1253,8 +1258,8 @@ gtk_container_remove (GtkContainer *container,
    * a direct child of the container.
    */
   g_return_if_fail (GTK_IS_TOOLBAR (container) ||
-                   widget->parent == GTK_WIDGET (container));
-  
+                    gtk_widget_get_parent (widget) == GTK_WIDGET (container));
+
   g_signal_emit (container, container_signals[REMOVE], 0, widget);
 }
 
@@ -1344,11 +1349,12 @@ gtk_container_set_reallocate_redraws (GtkContainer *container,
 static GtkContainer*
 gtk_container_get_resize_container (GtkContainer *container)
 {
+  GtkWidget *parent;
   GtkWidget *widget = GTK_WIDGET (container);
 
-  while (widget->parent)
+  while (parent = gtk_widget_get_parent (widget))
     {
-      widget = widget->parent;
+      widget = parent;
       if (GTK_IS_RESIZE_CONTAINER (widget))
        break;
     }
@@ -1389,6 +1395,7 @@ _gtk_container_queue_resize (GtkContainer *container)
 {
   GtkContainerPriv *priv;
   GtkContainer *resize_container;
+  GtkWidget *parent;
   GtkWidget *widget;
   
   g_return_if_fail (GTK_IS_CONTAINER (container));
@@ -1406,10 +1413,10 @@ _gtk_container_queue_resize (GtkContainer *container)
       GTK_PRIVATE_SET_FLAG (widget, GTK_HEIGHT_REQUEST_NEEDED);
 
       if ((resize_container && widget == GTK_WIDGET (resize_container)) ||
-         !widget->parent)
+         !(parent = gtk_widget_get_parent (widget)))
        break;
-      
-      widget = widget->parent;
+
+      widget = parent;
     }
       
   if (resize_container)
@@ -1464,16 +1471,20 @@ static void
 gtk_container_real_check_resize (GtkContainer *container)
 {
   GtkWidget *widget = GTK_WIDGET (container);
+  GtkAllocation allocation;
   GtkRequisition requisition;
   
   gtk_widget_size_request (widget, &requisition);
-  
-  if (requisition.width > widget->allocation.width ||
-      requisition.height > widget->allocation.height)
+  gtk_widget_get_allocation (widget, &allocation);
+
+  if (requisition.width > allocation.width ||
+      requisition.height > allocation.height)
     {
       if (GTK_IS_RESIZE_CONTAINER (container))
-       gtk_widget_size_allocate (GTK_WIDGET (container),
-                                 &GTK_WIDGET (container)->allocation);
+        {
+          gtk_widget_size_allocate (widget, &allocation);
+          gtk_widget_set_allocation (widget, &allocation);
+        }
       else
        gtk_widget_queue_resize (widget);
     }
@@ -1493,6 +1504,7 @@ gtk_container_real_check_resize (GtkContainer *container)
 void
 gtk_container_resize_children (GtkContainer *container)
 {
+  GtkAllocation allocation;
   GtkWidget *widget;
   
   /* resizing invariants:
@@ -1503,7 +1515,10 @@ gtk_container_resize_children (GtkContainer *container)
   g_return_if_fail (GTK_IS_CONTAINER (container));
 
   widget = GTK_WIDGET (container);
-  gtk_widget_size_allocate (widget, &widget->allocation);
+  gtk_widget_get_allocation (widget, &allocation);
+
+  gtk_widget_size_allocate (widget, &allocation);
+  gtk_widget_set_allocation (widget, &allocation);
 }
 
 /**
@@ -1673,7 +1688,7 @@ _gtk_container_child_composite_name (GtkContainer *container,
 
   g_return_val_if_fail (GTK_IS_CONTAINER (container), NULL);
   g_return_val_if_fail (GTK_IS_WIDGET (child), NULL);
-  g_return_val_if_fail (child->parent == GTK_WIDGET (container), NULL);
+  g_return_val_if_fail (gtk_widget_get_parent (child) == GTK_WIDGET (container), NULL);
 
   g_object_get (child, "composite-child", &composite_child, NULL);
   if (composite_child)
@@ -1729,6 +1744,7 @@ gtk_container_real_set_focus_child (GtkContainer     *container,
     {
       GtkAdjustment *hadj;
       GtkAdjustment *vadj;
+      GtkAllocation allocation;
       GtkWidget *focus_child;
       gint x, y;
 
@@ -1746,14 +1762,17 @@ gtk_container_real_set_focus_child (GtkContainer     *container,
          gtk_widget_translate_coordinates (focus_child, priv->focus_child,
                                            0, 0, &x, &y);
 
-          x += priv->focus_child->allocation.x;
-          y += priv->focus_child->allocation.y;
-         
+          gtk_widget_get_allocation (priv->focus_child, &allocation);
+          x += allocation.x;
+          y += allocation.y;
+
+          gtk_widget_get_allocation (focus_child, &allocation);
+
          if (vadj)
-           gtk_adjustment_clamp_page (vadj, y, y + focus_child->allocation.height);
-         
+           gtk_adjustment_clamp_page (vadj, y, y + allocation.height);
+
          if (hadj)
-           gtk_adjustment_clamp_page (hadj, x, x + focus_child->allocation.width);
+           gtk_adjustment_clamp_page (hadj, x, x + allocation.width);
        }
     }
 }
@@ -1839,18 +1858,22 @@ tab_compare (gconstpointer a,
             gconstpointer b,
             gpointer      data)
 {
+  GtkAllocation child1_allocation, child2_allocation;
   const GtkWidget *child1 = a;
   const GtkWidget *child2 = b;
   GtkTextDirection text_direction = GPOINTER_TO_INT (data);
 
-  gint y1 = child1->allocation.y + child1->allocation.height / 2;
-  gint y2 = child2->allocation.y + child2->allocation.height / 2;
+  gtk_widget_get_allocation ((GtkWidget *) child1, &child1_allocation);
+  gtk_widget_get_allocation ((GtkWidget *) child2, &child2_allocation);
+
+  gint y1 = child1_allocation.y + child1_allocation.height / 2;
+  gint y2 = child2_allocation.y + child2_allocation.height / 2;
 
   if (y1 == y2)
     {
-      gint x1 = child1->allocation.x + child1->allocation.width / 2;
-      gint x2 = child2->allocation.x + child2->allocation.width / 2;
-      
+      gint x1 = child1_allocation.x + child1_allocation.width / 2;
+      gint x2 = child2_allocation.x + child2_allocation.width / 2;
+
       if (text_direction == GTK_TEXT_DIR_RTL) 
        return (x1 < x2) ? 1 : ((x1 == x2) ? 0 : -1);
       else
@@ -1886,7 +1909,7 @@ get_allocation_coords (GtkContainer  *container,
                       GtkWidget     *widget,
                       GdkRectangle  *allocation)
 {
-  *allocation = widget->allocation;
+  gtk_widget_set_allocation (widget, allocation);
 
   return gtk_widget_translate_coordinates (widget, GTK_WIDGET (container),
                                           0, 0, &allocation->x, &allocation->y);
@@ -1908,7 +1931,9 @@ find_old_focus (GtkContainer *container,
 
       while (widget && widget != (GtkWidget *)container)
        {
-         GtkWidget *parent = widget->parent;
+         GtkWidget *parent;
+
+          parent = gtk_widget_get_parent (widget);
 
          if (parent && (gtk_container_get_focus_child (GTK_CONTAINER (parent)) != widget))
            goto next;
@@ -2050,9 +2075,12 @@ gtk_container_focus_sort_up_down (GtkContainer     *container,
     {
       /* No old focus widget, need to figure out starting x,y some other way
        */
+      GtkAllocation allocation;
       GtkWidget *widget = GTK_WIDGET (container);
       GdkRectangle old_focus_rect;
 
+      gtk_widget_get_allocation (widget, &allocation);
+
       if (old_focus_coords (container, &old_focus_rect))
        {
          compare.x = old_focus_rect.x + old_focus_rect.width / 2;
@@ -2060,15 +2088,15 @@ gtk_container_focus_sort_up_down (GtkContainer     *container,
       else
        {
          if (!gtk_widget_get_has_window (widget))
-           compare.x = widget->allocation.x + widget->allocation.width / 2;
+           compare.x = allocation.x + allocation.width / 2;
          else
-           compare.x = widget->allocation.width / 2;
+           compare.x = allocation.width / 2;
        }
       
       if (!gtk_widget_get_has_window (widget))
-       compare.y = (direction == GTK_DIR_DOWN) ? widget->allocation.y : widget->allocation.y + widget->allocation.height;
+       compare.y = (direction == GTK_DIR_DOWN) ? allocation.y : allocation.y + allocation.height;
       else
-       compare.y = (direction == GTK_DIR_DOWN) ? 0 : + widget->allocation.height;
+       compare.y = (direction == GTK_DIR_DOWN) ? 0 : + allocation.height;
     }
 
   children = g_list_sort_with_data (children, up_down_compare, &compare);
@@ -2177,9 +2205,12 @@ gtk_container_focus_sort_left_right (GtkContainer     *container,
     {
       /* No old focus widget, need to figure out starting x,y some other way
        */
+      GtkAllocation allocation;
       GtkWidget *widget = GTK_WIDGET (container);
       GdkRectangle old_focus_rect;
 
+      gtk_widget_get_allocation (widget, &allocation);
+
       if (old_focus_coords (container, &old_focus_rect))
        {
          compare.y = old_focus_rect.y + old_focus_rect.height / 2;
@@ -2187,15 +2218,15 @@ gtk_container_focus_sort_left_right (GtkContainer     *container,
       else
        {
          if (!gtk_widget_get_has_window (widget))
-           compare.y = widget->allocation.y + widget->allocation.height / 2;
+           compare.y = allocation.y + allocation.height / 2;
          else
-           compare.y = widget->allocation.height / 2;
+           compare.y = allocation.height / 2;
        }
       
       if (!gtk_widget_get_has_window (widget))
-       compare.x = (direction == GTK_DIR_RIGHT) ? widget->allocation.x : widget->allocation.x + widget->allocation.width;
+       compare.x = (direction == GTK_DIR_RIGHT) ? allocation.x : allocation.x + allocation.width;
       else
-       compare.x = (direction == GTK_DIR_RIGHT) ? 0 : widget->allocation.width;
+       compare.x = (direction == GTK_DIR_RIGHT) ? 0 : allocation.width;
     }
 
   children = g_list_sort_with_data (children, left_right_compare, &compare);
@@ -2653,7 +2684,7 @@ gtk_container_map_child (GtkWidget *child,
                         gpointer   client_data)
 {
   if (gtk_widget_get_visible (child) &&
-      GTK_WIDGET_CHILD_VISIBLE (child) &&
+      gtk_widget_get_child_visible (child) &&
       !gtk_widget_get_mapped (child))
     gtk_widget_map (child);
 }
@@ -2668,7 +2699,7 @@ gtk_container_map (GtkWidget *widget)
                        NULL);
 
   if (gtk_widget_get_has_window (widget))
-    gdk_window_show (widget->window);
+    gdk_window_show (gtk_widget_get_window (widget));
 }
 
 static void
@@ -2677,7 +2708,7 @@ gtk_container_unmap (GtkWidget *widget)
   gtk_widget_set_mapped (widget, FALSE);
 
   if (gtk_widget_get_has_window (widget))
-    gdk_window_hide (widget->window);
+    gdk_window_hide (gtk_widget_get_window (widget));
   else
     gtk_container_forall (GTK_CONTAINER (widget),
                          (GtkCallback)gtk_widget_unmap,
@@ -2715,11 +2746,11 @@ gtk_container_propagate_expose (GtkContainer   *container,
   g_return_if_fail (GTK_IS_WIDGET (child));
   g_return_if_fail (event != NULL);
 
-  g_assert (child->parent == GTK_WIDGET (container));
-  
+  g_assert (gtk_widget_get_parent (child) == GTK_WIDGET (container));
+
   if (gtk_widget_is_drawable (child) &&
       !gtk_widget_get_has_window (child) &&
-      (child->window == event->window))
+      gtk_widget_get_window (child) == event->window)
     {
       child_event = gdk_event_new (GDK_EXPOSE);
       child_event->expose = *event;